package sunstar.com.xq.util

import android.app.Activity
import android.content.Context
import android.text.TextUtils
import android.util.DisplayMetrics
import android.opengl.ETC1.getHeight
import android.content.Context.WINDOW_SERVICE
import android.view.WindowManager
import java.lang.reflect.Field


/**
 * Created by Sun.Star on 2017/6/7.
 */
class UtilBox {
    companion object{
        /**
         * 验证手机格式
         */
        fun isMobile(mobiles: String): Boolean {
            /*
		 * 移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
		 * 联通：130、131、132、152、155、156、185、186 电信：133、153、180、189、（1349卫通）
		 * 总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
		 */
            val telRegex = "[1][3578]\\d{9}"// "[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
            if (TextUtils.isEmpty(mobiles))
                return false
            else
                return mobiles.matches(telRegex.toRegex())
        }


        /**
         * 获取屏幕高度
         * @param activity
         * *
         * @return
         */
        fun getWindowHeight(activity: Activity): Int {
            val metrics = DisplayMetrics()
            activity.getWindowManager().getDefaultDisplay().getMetrics(metrics)
            return metrics.heightPixels
        }

        /**
         * 获取屏幕宽度
         * @param activity
         * *
         * @return
         */
        fun getWindowWith(activity: Activity): Int {
            val metrics = DisplayMetrics()
            activity.getWindowManager().getDefaultDisplay().getMetrics(metrics)
            return metrics.widthPixels
        }

        /**获取虚拟功能键高度  */
        fun getVirtualBarHeigh(context: Context): Int {
            var vh = 0
            val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
            val display = windowManager.getDefaultDisplay()
            val dm = DisplayMetrics()
            try {
                val c = Class.forName("android.view.Display")
                val method = c.getMethod("getRealMetrics", DisplayMetrics::class.java)
                method.invoke(display, dm)
                vh = dm.heightPixels - windowManager.getDefaultDisplay().getHeight()
            } catch (e: Exception) {
                e.printStackTrace()
            }

            return vh
        }

        fun getStatusBarHeight(context: Context): Int {
            var c: Class<*>? = null

            var obj: Any? = null

            var field: Field? = null

            var x = 0
            var sbar = 0

            try {

                c = Class.forName("com.android.internal.R\$dimen")

                obj = c!!.newInstance()

                field = c.getField("status_bar_height")

                x = Integer.parseInt(field!!.get(obj).toString())

                sbar = context.getResources().getDimensionPixelSize(x)

            } catch (e1: Exception) {

                e1.printStackTrace()

            }

            return sbar
        }

    }


}